#!/bin/bash

#Authors:
#  Bruno Goncalves Araujo <www.biglinux.com.br>
#
#License: GPLv2 or later
#################################################

###############
#####Importa o tema
###############
. /usr/share/bigcontrolcenter/default/theme-categories.sh.htm

###############
#####Criar diretorio para configuracoes
###############
mkdir ~/.bigconvert 2> /dev/null



##############
#####Translation
##############
export TEXTDOMAINDIR="/usr/share/locale-langpack"
export TEXTDOMAIN=bigcontrolcenter-others-bigconvert

echo '
<script language="JavaScript">
window.resizeTo(640,480);
function NoResize(){
  window.resizeTo(640,480);
}
</script>

<script language="JavaScript">
function SomenteNumero(e){
    var tecla=(window.event)?event.keyCode:e.which;
    if((tecla > 47 && tecla < 58)) return true;
    else{
    if (tecla != 8) return false;
    else return true;
    }
}
</script>


'

###############
#####Variaveis de nomes
###############
title=$"Big Converter"
apply=$"Iniciar conversao"
back=$"Voltar"
close="Sair"


##############
## CONVERTENDO
##############


ORI_IFS=$IFS
IFS=$'\n'
for i in $(cat ~/.bigconvert/videos); do
IFS=$ORI_IFS

if [ "$cancelado" != "yes" ]; then


#Inicia o dialogo de progresso
dcopRef=$(kdialog --title $"BigMencoder" --progressbar $"Iniciando..." 12 2> /dev/null)
qdbus $dcopRef org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog maximum 100 2> /dev/null
qdbus $dcopRef org.kde.kdialog.ProgressDialog.showCancelButton true 2> /dev/null


#Executa o mencoder
IFS=$'\n'
/usr/share/bigcontrolcenter/categories/others/bigconvert/mencoder "$i" 2> /dev/null
chmod +x ~/.bigconvert/mencoder
~/.bigconvert/mencoder > /tmp/bigmencoder-log$$ 2> /dev/null &
IFS=$ORI_IFS
#Aguarda 5 segundos para assegurar que o log ja foi criado
sleep 5

#Loop para manter a checagem da barra de progresso
  while true
   do
      #Confere se o botao cancelar foi clicado ou a janela de progresso foi fechada, se positivo encerra o loop
      if [ "$(qdbus $dcopRef org.kde.kdialog.ProgressDialog.wasCancelled)" != "false" ]; then
	  #Mata o mencoder, precisa ser melhorado utilizando pid para nao afetar outra execucao do mencoder
	  killall mencoder
	  cancelado=yes
	  qdbus $dcopRef org.kde.kdialog.ProgressDialog.close
	  kdialog --passivepopup $"Conversao cancelada." --title $"Big Converter" 2> /dev/null
	  sleep 2
	  killall mencoder
	  grep "^rm " ~/.bigconvert/mencoder | /bin/bash
	  break
      fi

      #Confere se a conversao do arquivo foi concluida, se positivo encerra o loop.
      if [ "$(sed '$!d' /tmp/bigmencoder-log$$ | grep fps)" != "" ]; then

	  #Adiciona mais dados sobre a barra de progresso
	  qdbus $dcopRef org.kde.kdialog.ProgressDialog.setLabelText " Convertendo, aguarde por favor.

$i
 $(sed '$!d;s/(.*)//;s/A.*//;s/V//' /tmp/bigmencoder-log$$)"


	  #Faz a leitura do Log e atualiza a barra de progresso
	  qdbus $dcopRef org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog value $(sed '$!d;s/.*(//; s/%.*//' /tmp/bigmencoder-log$$)

      else

	  #Confere novamente se a conversao do arquivo foi concluida, se positivo encerra o loop.
	  sleep 3
	  if [ "$(sed '$!d' /tmp/bigmencoder-log$$ | grep fps)" = "" ]; then
	      qdbus $dcopRef org.kde.kdialog.ProgressDialog.close 2> /dev/null
	      kdialog --passivepopup $"Conversao de $i concluida." --title $"Big Mencoder" &
	      break
	  fi
      fi

  #Aguarda 3 segundos para refazer o loop
  sleep 3
  done

  #Remove o arquivo de log
  rm -f /tmp/bigmencoder-log$$

  IFS=$'\n'
fi
done
IFS=$ORI_IFS


###############
#####Titulo
###############
echo "<title>$title</title><body onResize=\"NoResize();\">"


###############
#####Carregar o tema
###############
echo '<link rel="stylesheet" href="demo/dialog.css" media="screen" />'
open_header
echo "$title" '</font><br>' $"Converta videos ou extraia audio."
close_header


###############
#####Inicio da exibicao da GUI
###############
#O uso do echo pode ser separado em diversos pedacoes dentro do mesmo comando
#O uso de aspas simples faz o sistema exibir exatamente o que esta escrito
#Quando se utiliza aspas duplas o sistema executa algumas partes do codigo antes de passar a resposta, entre essas execucoes inclui a interpretacao de variaveis
#Para incluir textos a serem exibidos ao usuario utilize aspas duplas com $ antes, para que funcione o sistema de tradução, exemplo: $"texto"
#No exemplo abaixo o memso comando echo foi aberto e fechado diversas vezes de acordo com a necessidade, aspas simples, duplas e duplas com traducao.

##############
####Converter para
##############

echo '<center><table width=95%><tr><td>'


. /usr/share/bigcontrolcenter/categories/others/bigconvert/simples/$(cat ~/.bigconvert/formatsimples)

###############
#####LEGENDA
###############

echo '<center><table width=95%><tr><td>'
echo '<div id="demo"><div class="dialog">
 <div class="content">
  <div class="t"></div>
  <center><p style="margin: 4px 4px 4px 0px;"><font size=+1>' $"Conversao concluida." '</font></center>'


echo "<table width=100%><tr><td align=center><br><img src=submit.png><br><br><br><br><br><br>"
echo "</td></tr></table>"

echo '

</div>
 <div class="b"><div></div></div>
</div>
</div>'



###############
#####RODAPE
###############
echo "</div><div id=\"rodape\"><button value= $apply onClick=\"parent.location='convert.sh.htm'\">   <img src=\"/usr/share/bigcontrolcenter/categories/others/bigconvert/back.png\" style=\"vertical-align:top\" />  $back   </button>  <button type=button value= $close onClick= parent.location='/usr/share/bigbashview/exemplo2.sh.htm?close=True'>   <img src=\"/usr/share/bigcontrolcenter/default/images/cancel.png\" style=\"vertical-align:top\"  />  $close     </button></div>"

